home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / FREENET / JONES / LOGIN / s / sysvars < prev   
Text File  |  1995-08-29  |  1KB  |  80 lines

  1. ; vi:ts=8:sw=8:nosi:ai
  2. ;
  3. ; Copyright (C) 1994 Alun Jones, auj@aber.ac.uk
  4. ;
  5. ; This source code is freeware.
  6. ;
  7. ; Simple library for handling system variables.
  8. ;
  9.  
  10. .PROC    setenv ; (char *var, char *val)
  11.     STMFD    R13!, {R4}
  12.     MOV    R2, #0
  13. len    LDRB    R3, [R0, R2]
  14.     ADD    R2, R2, #1
  15.     CMP    R3, #0
  16.     BNE    len
  17.     SUB    R2, R2, #1
  18.     MOV    R3, #0
  19.     MOV    R4, #0
  20.     SWI    XOS_SetVarVal
  21.     MOVVC    R0, #0
  22.     LDMFD    R13!, {R4}
  23.     MOVS    PC, R14
  24.  
  25. .PROC    readonly ; (char *var, char *val)
  26.  
  27.     STMFD    R13!, {R4}
  28.     ADR    R2, buffer
  29.     MOV    R4, #0
  30. loop    LDRB    R3, [R1], #1
  31.     STRB    R3, [R2], #1
  32.     CMP    R3, #0
  33.     BNE    loop
  34.  
  35.     ADR    R1, code        ; Code start ptr
  36.     SUB    R2, R2, R1        ; Length of code and buffer
  37.     MOV    R3, #0            ; Context ptr
  38.     MOV    R4, #10            ; Code variable
  39.     SWI    XOS_SetVarVal
  40.     MOVVC    R0, #0
  41.     LDMFD    R13!, {R4}
  42.     MOVS    PC, R14
  43.  
  44. code    B    write            ; Branch to code write
  45.  
  46. read    STMFD    R13!, {R1,R3, R14}
  47.     ADR    R0, buffer
  48.     MOV    R2, R0
  49. count    LDRB    R1, [R2], #1
  50.     CMP    R1, #" "
  51.     BGE    count
  52.     SUB    R2, R2, #1
  53.     SUB    R2, R2, R0
  54.     LDMFD    R13!, {R1,R3, PC}
  55.  
  56. write
  57.     ORR    R14, R14, #10000000
  58.     ADR    R0, ErrMess
  59.     MOVS    PC, R14
  60.     LDMFD    R13!, {PC}
  61.  
  62. ErrMess    .WORD    0
  63.     .STRING    "Variable is readonly"
  64. endcode
  65.  
  66. buffer    .BLOCK    100, 0
  67.     .ALIGN
  68.  
  69. .PROC    writeable ; (char *name)
  70.     STMFD    R13!, {R4}
  71.     MOV    R0, R1            ; Variable name ptr
  72.     MVN    R2, #0            ; -1 to delete variable
  73.     MOV    R3, #0
  74.     MOV    R4, #10
  75.     SWI    XOS_SetVarVal
  76.     MOVVC    R0, #0
  77.     LDMFD    R13!, {R4}
  78.     MOVS    PC, R14
  79. .END
  80.